package grade.calculate.listener;

import grade.calculate.event.Event;
import grade.calculate.pojo.Data;

/**
 * 自定义监听器必须实现此接口
 * <p>读取方法执行完后 按照添加事件的顺序 运行事件的run方法</p>
 *
 * @author fromdrowning
 * @date 2024/2/27 18:24
 */
public interface Listener {

    /**
     * 添加事件
     *
     * @param event 读取方法执行完后需要执行的事件
     */
    void addEventAfterRead(Event event);

    /**
     * 通知所有事件
     * <p>读取方法执行完后 此方法会被调用 按照添加事件的顺序 运行事件的run方法</p>
     *
     * @param data {@link Data}中可以获取到启动时配置的参数和其它事件处理结果数据
     */
    void notifyAllEvent(Data data);

}
